import { queryPath } from '../../utils'
//获取服务器中的小程序信息，模拟调用微信开放平台接口，获取应用信息
import { getMiniAppInfo } from '../../services'
import { MiniAppSandbox } from '../miniAppSandbox/miniAppSandbox'


//app容器管理
export class AppManager {
	static appStack = [];

	//打开小程序
	static async openApp(opts, wx) {
		console.log('打开小程序:', opts);
		const {appId, path, scene,currProjectPath,windowWidth,windowHeight} = opts;
		//获取路径中的参数
		const { pagePath,query} = queryPath(path);
		//获取服务器中的小程序信息
		const {name,logo} = await getMiniAppInfo(appId);

		//判断小程序是不是在缓存中
		const cacheApp=this.getAppById(appId);
		if(cacheApp){
			//如果存在，则直接打开
			//热启动
			wx.presentView(cacheApp,true);

		}else{
			//如果不存在，则创建新的小程序实例
			//创建小程序实例
			const miniApp= new MiniAppSandbox({appName:name, logo, appId, scene, pagePath,query,currProjectPath,windowWidth,windowHeight});
			
			this.appStack.push(miniApp);
	
			wx.presentView(miniApp,false);
		}

    }
	//获取小程序实例
	static getAppById(appId){
		for (let i = 0; i < this.appStack.length; i++) {
			const app = this.appStack[i];
			if(app.appId===appId){
				return app;
			}
		}
		return null;
	}
	//关闭小程序
	static async closeApp(miniApp) {
		console.log('关闭小程序', miniApp.appInfo);
		//关闭视图
		miniApp.parent.dismissView({
			destroy: false,
			appId: miniApp.appInfo.appId,
		});
		
    }

	//最小化小程序
	static async minimizeApp(miniApp) {
		console.log('关闭小程序', miniApp.appInfo);
		//关闭视图
		miniApp.parent.minimizeView({
			destroy: false,
			appId: miniApp.appInfo.appId,
		});
		
    }

}